﻿namespace TestByWire
{
	public class TestTarget<T> : TestTarget<T, T>
		where T : class
	{
	}

	public class TestTarget<TInterface, TImplementation>
		where TImplementation : class, TInterface
	{
		private readonly TargetInvoker<TInterface, TImplementation> _when;

		//protected internal TestTarget

		protected TestTarget()
		{
			_when = new TargetInvoker<TInterface, TImplementation>();
			Then = new ThenWithTarget<TInterface>();
		}

		protected internal TargetInvoker<TInterface, TImplementation> When
		{
			get { return _when; }
		}

		public ThenWithTarget<TInterface> Then
		{
			get;
			private set;
		}
	}
}
